home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Graphics Programming (2nd Edition) / Visual Basic Graphics Programming 2nd Edition.iso / Src / Ch6 / Complem.frm < prev    next >
Text File  |  1999-04-25  |  6KB  |  215 lines

  1. VERSION 5.00
  2. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
  3. Begin VB.Form frmComplem 
  4.    Caption         =   "Complem []"
  5.    ClientHeight    =   3000
  6.    ClientLeft      =   165
  7.    ClientTop       =   735
  8.    ClientWidth     =   5145
  9.    LinkTopic       =   "Form2"
  10.    ScaleHeight     =   3000
  11.    ScaleWidth      =   5145
  12.    StartUpPosition =   3  'Windows Default
  13.    Begin MSComDlg.CommonDialog dlgOpenFile 
  14.       Left            =   2760
  15.       Top             =   0
  16.       _ExtentX        =   847
  17.       _ExtentY        =   847
  18.       _Version        =   393216
  19.    End
  20.    Begin VB.PictureBox picOriginal 
  21.       AutoSize        =   -1  'True
  22.       Height          =   2775
  23.       Left            =   120
  24.       ScaleHeight     =   181
  25.       ScaleMode       =   3  'Pixel
  26.       ScaleWidth      =   157
  27.       TabIndex        =   1
  28.       Top             =   120
  29.       Width           =   2415
  30.    End
  31.    Begin VB.PictureBox picResult 
  32.       Height          =   2775
  33.       Left            =   2640
  34.       ScaleHeight     =   181
  35.       ScaleMode       =   3  'Pixel
  36.       ScaleWidth      =   157
  37.       TabIndex        =   0
  38.       Top             =   120
  39.       Width           =   2415
  40.    End
  41.    Begin VB.Menu mnuFile 
  42.       Caption         =   "&File"
  43.       Begin VB.Menu mnuFileOpen 
  44.          Caption         =   "&Open..."
  45.          Shortcut        =   ^O
  46.       End
  47.       Begin VB.Menu mnuFileSaveAs 
  48.          Caption         =   "Save &As..."
  49.          Shortcut        =   ^A
  50.       End
  51.    End
  52. End
  53. Attribute VB_Name = "frmComplem"
  54. Attribute VB_GlobalNameSpace = False
  55. Attribute VB_Creatable = False
  56. Attribute VB_PredeclaredId = True
  57. Attribute VB_Exposed = False
  58. Option Explicit
  59. ' Arrange the controls.
  60. Private Sub ArrangeControls()
  61.     ' Position the result PictureBox.
  62.     picResult.Move _
  63.         picOriginal.Left + picOriginal.Width + 120, _
  64.         picOriginal.Top, _
  65.         picOriginal.Width, _
  66.         picOriginal.Height
  67.     picResult.Cls
  68.  
  69.     ' This makes the image resize itself to
  70.     ' fit the picture.
  71.     picResult.Picture = picResult.Image
  72.  
  73.     ' Make the form big enough.
  74.     Width = picResult.Left + picResult.Width + _
  75.         Width - ScaleWidth + 120
  76.     Height = picResult.Top + picResult.Height + _
  77.         Height - ScaleHeight + 120
  78.     DoEvents
  79. End Sub
  80.  
  81. ' Transform the image.
  82. Private Sub TransformImage()
  83. Dim pixels() As RGBTriplet
  84. Dim bits_per_pixel As Integer
  85. Dim X As Integer
  86. Dim Y As Integer
  87.  
  88.     ' Get the pixels from picOriginal.
  89.     GetBitmapPixels picOriginal, pixels, bits_per_pixel
  90.  
  91.     ' Set the pixel colors.
  92.     For Y = 0 To picOriginal.ScaleHeight - 1
  93.         For X = 0 To picOriginal.ScaleWidth - 1
  94.             With pixels(X, Y)
  95.                 .rgbRed = 255 - .rgbRed
  96.                 .rgbGreen = 255 - .rgbGreen
  97.                 .rgbBlue = 255 - .rgbBlue
  98.             End With
  99.         Next X
  100.     Next Y
  101.  
  102.     ' Set picResult's pixels.
  103.     SetBitmapPixels picResult, bits_per_pixel, pixels
  104.     picResult.Picture = picResult.Image
  105. End Sub
  106.  
  107. ' Start in the current directory.
  108. Private Sub Form_Load()
  109.     picOriginal.AutoSize = True
  110.     picOriginal.ScaleMode = vbPixels
  111.     picOriginal.AutoRedraw = True
  112.     picResult.ScaleMode = vbPixels
  113.     picResult.AutoRedraw = True
  114.  
  115.     dlgOpenFile.CancelError = True
  116.     dlgOpenFile.InitDir = App.Path
  117.     dlgOpenFile.Filter = _
  118.         "Bitmaps (*.bmp)|*.bmp|" & _
  119.         "GIFs (*.gif)|*.gif|" & _
  120.         "JPEGs (*.jpg)|*.jpg;*.jpeg|" & _
  121.         "Icons (*.ico)|*.ico|" & _
  122.         "Cursors (*.cur)|*.cur|" & _
  123.         "Run-Length Encoded (*.rle)|*.rle|" & _
  124.         "Metafiles (*.wmf)|*.wmf|" & _
  125.         "Enhanced Metafiles (*.emf)|*.emf|" & _
  126.         "Graphic Files|*.bmp;*.gif;*.jpg;*.jpeg;*.ico;*.cur;*.rle;*.wmf;*.emf|" & _
  127.         "All Files (*.*)|*.*"
  128. End Sub
  129. ' Load the indicated file.
  130. Private Sub mnuFileOpen_Click()
  131. Dim file_name As String
  132.  
  133.     ' Let the user select a file.
  134.     On Error Resume Next
  135.     dlgOpenFile.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly
  136.     dlgOpenFile.ShowOpen
  137.     If Err.Number = cdlCancel Then
  138.         Exit Sub
  139.     ElseIf Err.Number <> 0 Then
  140.         Beep
  141.         MsgBox "Error selecting file.", , vbExclamation
  142.         Exit Sub
  143.     End If
  144.     On Error GoTo 0
  145.  
  146.     Screen.MousePointer = vbHourglass
  147.     DoEvents
  148.  
  149.     file_name = Trim$(dlgOpenFile.FileName)
  150.     dlgOpenFile.InitDir = Left$(file_name, Len(file_name) _
  151.         - Len(dlgOpenFile.FileTitle) - 1)
  152.     Caption = "Complem [" & dlgOpenFile.FileTitle & "]"
  153.  
  154.     ' Open the original file.
  155.     On Error GoTo LoadError
  156.     picOriginal.Picture = LoadPicture(file_name)
  157.     On Error GoTo 0
  158.  
  159.     ' Make picResult the same size and position it.
  160.     ArrangeControls
  161.  
  162.     ' Transform the image.
  163.     TransformImage
  164.  
  165.     Screen.MousePointer = vbDefault
  166.     Exit Sub
  167.  
  168. LoadError:
  169.     Screen.MousePointer = vbDefault
  170.     MsgBox "Error " & Format$(Err.Number) & _
  171.         " opening file '" & file_name & "'" & vbCrLf & _
  172.         Err.Description
  173. End Sub
  174.  
  175. ' Save the transformed image.
  176. Private Sub mnuFileSaveAs_Click()
  177. Dim file_name As String
  178.  
  179.     ' Let the user select a file.
  180.     On Error Resume Next
  181.     dlgOpenFile.Flags = cdlOFNOverwritePrompt + cdlOFNHideReadOnly
  182.     dlgOpenFile.ShowSave
  183.     If Err.Number = cdlCancel Then
  184.         Exit Sub
  185.     ElseIf Err.Number <> 0 Then
  186.         Beep
  187.         MsgBox "Error selecting file.", , vbExclamation
  188.         Exit Sub
  189.     End If
  190.     On Error GoTo 0
  191.  
  192.     Screen.MousePointer = vbHourglass
  193.     DoEvents
  194.  
  195.     file_name = Trim$(dlgOpenFile.FileName)
  196.     dlgOpenFile.InitDir = Left$(file_name, Len(file_name) _
  197.         - Len(dlgOpenFile.FileTitle) - 1)
  198.     Caption = "Complem [" & dlgOpenFile.FileTitle & "]"
  199.  
  200.     ' Save the transformed image into the file.
  201.     On Error GoTo SaveError
  202.     SavePicture picResult.Picture, file_name
  203.     On Error GoTo 0
  204.  
  205.     Screen.MousePointer = vbDefault
  206.     Exit Sub
  207.  
  208. SaveError:
  209.     Screen.MousePointer = vbDefault
  210.     MsgBox "Error " & Format$(Err.Number) & _
  211.         " saving file '" & file_name & "'" & vbCrLf & _
  212.         Err.Description
  213. End Sub
  214.  
  215.